package common

// PlatformConfig 支付平台配置
type PlatformConfig struct {
	// 基础配置
	AppID      string `json:"app_id" yaml:"app_id"`           // 应用ID
	AppSecret  string `json:"app_secret" yaml:"app_secret"`   // 应用密钥
	GatewayURL string `json:"gateway_url" yaml:"gateway_url"` // 网关地址

	// 回调配置
	ReturnURL string `json:"return_url" yaml:"return_url"` // 同步返回地址
	NotifyURL string `json:"notify_url" yaml:"notify_url"` // 异步通知地址

	// 证书配置
	PrivateKey string `json:"private_key" yaml:"private_key"` // 私钥
	PublicKey  string `json:"public_key" yaml:"public_key"`   // 公钥

	// 其他配置
	Timeout int `json:"timeout" yaml:"timeout"` // 超时时间（秒）
}

// 基础响应结构
type BaseResponse struct {
	Code string `json:"code"` // 响应码，统一使用string类型
	Msg  string `json:"msg"`  // 响应消息
}

// 分页响应结构
type PageResponse struct {
	BaseResponse
	Data      interface{} `json:"data"`      // 数据
	Numbers   int         `json:"numbers"`   // 当前页数量
	PageIndex int64       `json:"pageIndex"` // 当前页码
	PageSize  int64       `json:"pageSize"`  // 每页大小
	Total     int64       `json:"total"`     // 总记录数
}

// PaymentRequest 支付请求
type PaymentRequest struct {
	OrderID  string                 `json:"order_id"`       // 订单ID
	Amount   float64                `json:"amount"`         // 支付金额
	Currency string                 `json:"currency"`       // 货币类型
	Subject  string                 `json:"subject"`        // 订单标题
	Body     string                 `json:"body,omitempty"` // 订单描述
	Extra    map[string]interface{} `json:"extra"`          // 额外参数
}

// PaymentResponse 支付响应
type PaymentResponse struct {
	PlatformID    string                 `json:"platform_id"`    // 平台ID
	OrderID       string                 `json:"order_id"`       // 订单ID
	TransactionID string                 `json:"transaction_id"` // 交易ID
	Status        string                 `json:"status"`         // 状态
	PayURL        string                 `json:"pay_url"`        // 支付链接
	Extra         map[string]interface{} `json:"extra"`          // 额外信息
}

// RefundRequest 退款请求
type RefundRequest struct {
	OrderID       string                 `json:"order_id"`       // 订单ID
	TransactionID string                 `json:"transaction_id"` // 交易ID
	Amount        float64                `json:"amount"`         // 退款金额
	Reason        string                 `json:"reason"`         // 退款原因
	Extra         map[string]interface{} `json:"extra"`          // 额外参数
}

// RefundResponse 退款响应
type RefundResponse struct {
	PlatformID string                 `json:"platform_id"` // 平台ID
	OrderID    string                 `json:"order_id"`    // 订单ID
	RefundID   string                 `json:"refund_id"`   // 退款ID
	Status     string                 `json:"status"`      // 状态
	Extra      map[string]interface{} `json:"extra"`       // 额外信息
}

// QueryRequest 查询请求
type QueryRequest struct {
	OrderID       string `json:"order_id"`       // 订单ID
	TransactionID string `json:"transaction_id"` // 交易ID
}

// QueryResponse 查询响应
type QueryResponse struct {
	PlatformID    string                 `json:"platform_id"`    // 平台ID
	OrderID       string                 `json:"order_id"`       // 订单ID
	TransactionID string                 `json:"transaction_id"` // 交易ID
	Status        string                 `json:"status"`         // 状态
	Amount        float64                `json:"amount"`         // 金额
	Currency      string                 `json:"currency"`       // 货币类型
	Extra         map[string]interface{} `json:"extra"`          // 额外信息
}

// CallbackRequest 回调请求
type CallbackRequest struct {
	RawData []byte `json:"raw_data"` // 原始数据
}

// CallbackResponse 回调响应
type CallbackResponse struct {
	Success bool                   `json:"success"` // 是否成功
	Message string                 `json:"message"` // 消息
	Extra   map[string]interface{} `json:"extra"`   // 额外信息
}

// 账户相关类型

// AccountBalanceRequest 账户余额查询请求
type AccountBalanceRequest struct {
	Currency      string `json:"currency"`                // 货币类型
	AccountNo     string `json:"accountNo,omitempty"`     // 账户号
	MemberID      string `json:"memberId,omitempty"`      // 会员ID
	AccountType   string `json:"accountType,omitempty"`   // 账户类型
	MatrixAccount string `json:"matrixAccount,omitempty"` // 矩阵账户
}

// AccountBalanceInfo 账户余额信息
type AccountBalanceInfo struct {
	MemberID        string  `json:"memberId"`        // 会员ID
	AccountNo       string  `json:"accountNo"`       // 账户号
	AccountType     string  `json:"accountType"`     // 账户类型
	Currency        string  `json:"currency"`        // 货币类型
	RealTimeBalance float64 `json:"realTimeBalance"` // 实时余额
	ReturnedAt      string  `json:"returnedAt"`      // 返回时间
}

// AccountBalanceResponse 账户余额查询响应
type AccountBalanceResponse struct {
	BaseResponse
	Data AccountBalanceInfo `json:"data"`
}

// AccountListRequest 账户列表查询请求
type AccountListRequest struct {
	AccountNo     string `json:"accountNo,omitempty"`     // 账户号
	MemberID      string `json:"memberId,omitempty"`      // 会员ID
	MatrixAccount string `json:"matrixAccount,omitempty"` // 矩阵账户
	PageIndex     int64  `json:"pageIndex,omitempty"`     // 页码
	PageSize      int64  `json:"pageSize,omitempty"`      // 每页大小
}

// AccountListInfo 账户列表信息
type AccountListInfo struct {
	AccountNo       string  `json:"accountNo"`       // 账户号
	MemberID        string  `json:"memberId"`        // 会员ID
	Currency        string  `json:"currency"`        // 货币类型
	OwnerNo         string  `json:"ownerNo"`         // 所有者编号
	OwnerType       string  `json:"ownerType"`       // 所有者类型
	RealTimeBalance float64 `json:"realTimeBalance"` // 实时余额
}

// AccountListResponse 账户列表查询响应
type AccountListResponse struct {
	BaseResponse
	Data      []AccountListInfo `json:"data"`
	PageIndex int64             `json:"pageIndex"`
	PageSize  int64             `json:"pageSize"`
	Total     int64             `json:"total"`
}

// AccountHistoryRequest 账户历史查询请求
type AccountHistoryRequest struct {
	TransactedAtStart    string   `json:"transactedAtStart"`              // 交易开始时间
	TransactedAtEnd      string   `json:"transactedAtEnd"`                // 交易结束时间
	MemberID             string   `json:"memberId,omitempty"`             // 会员ID
	AccountTransactionID string   `json:"accountTransactionId,omitempty"` // 账户交易ID
	Currency             string   `json:"currency,omitempty"`             // 货币类型
	AccountType          string   `json:"accountType,omitempty"`          // 账户类型
	MatrixAccount        string   `json:"matrixAccount,omitempty"`        // 矩阵账户
	AccountNo            string   `json:"accountNo,omitempty"`            // 账户号
	TxnType              []string `json:"txnType,omitempty"`              // 交易类型
	PageSize             int64    `json:"pageSize,omitempty"`             // 每页大小
	PageIndex            int64    `json:"pageIndex,omitempty"`            // 页码
}

// AccountHistoryInfo 账户历史信息
type AccountHistoryInfo struct {
	MemberID         string  `json:"memberId"`         // 会员ID
	AccountHistoryNo string  `json:"accountHistoryNo"` // 账户历史编号
	AccountNo        string  `json:"accountNo"`        // 账户号
	Amount           float64 `json:"amount"`           // 金额
	BalanceFund      float64 `json:"balanceFund"`      // 余额资金
	BatchID          string  `json:"batchId"`          // 批次ID
	Currency         string  `json:"currency"`         // 货币类型
	TransactedAt     string  `json:"transactedAt"`     // 交易时间
	Sources          string  `json:"sources"`          // 来源
	TransactionNotes string  `json:"transactionNotes"` // 交易备注
	TxnType          string  `json:"txnType"`          // 交易类型
	VoucherID        string  `json:"voucherId"`        // 凭证ID
}

// AccountHistoryResponse 账户历史查询响应
type AccountHistoryResponse struct {
	BaseResponse
	Data      []AccountHistoryInfo `json:"data"`
	PageIndex int64                `json:"pageIndex"`
	PageSize  int64                `json:"pageSize"`
	Total     int64                `json:"total"`
}

// 卡片相关类型

// CardListRequest 卡片列表查询请求
type CardListRequest struct {
	PageIndex      int64  `json:"pageIndex"`                // 页码
	PageSize       int64  `json:"pageSize"`                 // 每页大小
	MatrixAccount  string `json:"matrixAccount,omitempty"`  // 矩阵账户
	CardBin        string `json:"cardBin,omitempty"`        // 卡bin
	CreatedAtStart string `json:"createdAtStart,omitempty"` // 创建开始时间
	CreatedAtEnd   string `json:"createdAtEnd,omitempty"`   // 创建结束时间
	CardType       string `json:"cardType,omitempty"`       // 卡类型
	CardFormFactor string `json:"cardFormFactor,omitempty"` // 卡介质
	CardStatus     string `json:"cardStatus,omitempty"`     // 卡状态
}

// CardInfo 卡片信息
type CardInfo struct {
	CardBalance         float64  `json:"cardBalance"`                // 卡余额
	CardCurrency        string   `json:"cardCurrency"`               // 卡币种
	CardID              string   `json:"cardId"`                     // 卡ID
	CardScheme          string   `json:"cardScheme"`                 // 卡组织
	CardStatus          string   `json:"cardStatus"`                 // 卡状态
	CardType            string   `json:"cardType"`                   // 卡类型
	CreatedAt           string   `json:"createdAt"`                  // 创建时间
	MatrixAccount       string   `json:"matrixAccount"`              // 矩阵账户
	MemberID            string   `json:"memberId"`                   // 会员ID
	MaskCardNo          string   `json:"maskCardNo"`                 // 掩码卡号
	Nickname            string   `json:"nickname"`                   // 卡昵称
	CardFormFactor      string   `json:"cardFormFactor"`             // 卡介质
	TotalTransferAmount float64  `json:"totalTransferAmount"`        // 总转账金额
	TransactionLimit    *float64 `json:"transactionLimit,omitempty"` // 交易限额
}

// CardListResponse 卡片列表查询响应
type CardListResponse struct {
	BaseResponse
	Data      []CardInfo `json:"data"`
	PageIndex int64      `json:"pageIndex"`
	PageSize  int64      `json:"pageSize"`
	Total     int64      `json:"total"`
}

// CardDetailRequest 卡片详情查询请求
type CardDetailRequest struct {
	CardID string `json:"cardId"` // 卡ID
}

// CardDetailInfo 卡片详情信息
type CardDetailInfo struct {
	CardID                    string   `json:"cardId"`                     // 卡ID
	CardNo                    string   `json:"cardNo"`                     // 卡号
	MaskCardNo                string   `json:"maskCardNo"`                 // 掩码卡号
	CardBin                   string   `json:"cardBin"`                    // 卡BIN
	CardScheme                string   `json:"cardScheme"`                 // 卡组织
	CardType                  string   `json:"cardType"`                   // 卡类型
	CardStatus                string   `json:"cardStatus"`                 // 卡状态
	CardBalance               float64  `json:"cardBalance"`                // 卡余额
	CardCurrency              string   `json:"cardCurrency"`               // 卡币种
	CardFormFactor            string   `json:"cardFormFactor"`             // 卡介质
	ExpirationDate            string   `json:"expirationDate"`             // 过期日期
	CVV                       string   `json:"cvv"`                        // CVV码
	FirstName                 string   `json:"firstName"`                  // 名
	LastName                  string   `json:"lastName"`                   // 姓
	Email                     string   `json:"email"`                      // 邮箱
	Mobile                    string   `json:"mobile"`                     // 手机号
	MobilePrefix              string   `json:"mobilePrefix"`               // 手机前缀
	BillingAddress            string   `json:"billingAddress"`             // 账单地址
	BillingCity               string   `json:"billingCity"`                // 账单城市
	BillingState              string   `json:"billingState"`               // 账单州
	BillingPostalCode         string   `json:"billingPostalCode"`          // 账单邮编
	BillingCountry            string   `json:"billingCountry"`             // 账单国家
	Nationality               string   `json:"nationality"`                // 国籍
	Nickname                  string   `json:"nickname"`                   // 昵称
	MatrixAccount             string   `json:"matrixAccount"`              // 矩阵账户
	MemberID                  string   `json:"memberId"`                   // 会员ID
	CardholderID              string   `json:"cardholderId"`               // 持卡人ID
	TransactionLimit          *float64 `json:"transactionLimit,omitempty"` // 交易限额
	TransactionLimitType      string   `json:"transactionLimitType"`       // 交易限额类型
	TotalTransactionLimit     int      `json:"totalTransactionLimit"`      // 总交易限额
	MaxOnDaily                int      `json:"maxOnDaily"`                 // 每日最大限额
	AvailableTransactionLimit int      `json:"availableTransactionLimit"`  // 可用交易限额
	BillingAddressUpdatable   string   `json:"billingAddressUpdatable"`    // 账单地址是否可更新
	CreatedAt                 string   `json:"createdAt"`                  // 创建时间
	TotalTransferAmount       float64  `json:"totalTransferAmount"`        // 总转账金额
}

// CardDetailResponse 卡片详情查询响应
type CardDetailResponse struct {
	BaseResponse
	Data CardDetailInfo `json:"data"`
}

// OpenCardRequest 开卡请求
type OpenCardRequest struct {
	UserID               int64   `json:"userId"`                         // 用户ID
	MemberID             string  `json:"memberId,omitempty"`             // 会员ID
	MatrixAccount        string  `json:"matrixAccount,omitempty"`        // 矩阵账户
	AccountID            string  `json:"accountId,omitempty"`            // 账户ID
	AccountNo            string  `json:"accountNo,omitempty"`            // 账户号
	CardBin              string  `json:"cardBin"`                        // 卡bin
	CardBinId            string  `json:"cardBinId,omitempty"`            // 卡Bin ID
	CardCurrency         string  `json:"cardCurrency"`                   // 卡币种
	CardExpirationDate   int     `json:"cardExpirationDate,omitempty"`   // 卡过期日期
	CardScheme           string  `json:"cardScheme,omitempty"`           // 卡组织
	CardType             string  `json:"cardType"`                       // 卡类型
	CardFormFactor       string  `json:"cardFormFactor,omitempty"`       // 卡介质
	CardholderID         string  `json:"cardholderId,omitempty"`         // 持卡人ID
	CardDesignID         string  `json:"cardDesignId,omitempty"`         // 卡设计ID
	CardLogoID           string  `json:"cardLogoId,omitempty"`           // 卡logo ID
	MaxOnDaily           int     `json:"maxOnDaily,omitempty"`           // 每日最大限额
	MaxOnMonthly         int     `json:"maxOnMonthly,omitempty"`         // 每月最大限额
	MaxOnPercent         int     `json:"maxOnPercent,omitempty"`         // 最大百分比
	Cost                 float64 `json:"cost,omitempty"`                 // 卡片初始金额
	RechargeAmount       string  `json:"rechargeAmount,omitempty"`       // 充值金额
	RequestID            string  `json:"requestId"`                      // 请求ID
	TransactionLimit     string  `json:"transactionLimit,omitempty"`     // 交易限额
	TransactionLimitType string  `json:"transactionLimitType,omitempty"` // 交易限额类型
	ArrivalAmount        string  `json:"arrivalAmount,omitempty"`        // 到账金额
	RecipientID          string  `json:"recipientId,omitempty"`          // 收款人ID
}

// OpenCardResponse 开卡响应
type OpenCardResponse struct {
	BaseResponse
	Data string `json:"data"` // 卡ID
}

// RechargeCardRequest 充值卡片请求
type RechargeCardRequest struct {
	CardID    string  `json:"cardId"`           // 卡ID
	Amount    float64 `json:"amount"`           // 充值金额
	Remark    string  `json:"remark,omitempty"` // 备注
	RequestID string  `json:"requestId"`        // 请求ID
}

// RechargeCardResponse 充值卡片响应
type RechargeCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"`
}

// WithdrawCardRequest 提现卡片请求
type WithdrawCardRequest struct {
	CardID string  `json:"cardId"`           // 卡ID
	Amount float64 `json:"amount"`           // 提现金额
	Remark string  `json:"remark,omitempty"` // 备注
}

// WithdrawCardResponse 提现卡片响应
type WithdrawCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"`
}

// FreezeCardRequest 冻结卡片请求
type FreezeCardRequest struct {
	CardID string `json:"cardId"` // 卡ID
}

// FreezeCardResponse 冻结卡片响应
type FreezeCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"`
}

// EnableCardRequest 启用卡片请求
type EnableCardRequest struct {
	CardID string `json:"cardId"` // 卡ID
}

// EnableCardResponse 启用卡片响应
type EnableCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"`
}

// CancelCardRequest 取消卡片请求
type CancelCardRequest struct {
	CardID string `json:"cardId"` // 卡ID
}

// CancelCardResponse 取消卡片响应
type CancelCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"`
}

// 交易相关类型

// TransactionListRequest 交易列表查询请求
type TransactionListRequest struct {
	CardID          string `json:"cardId,omitempty"`          // 卡ID
	CardNo          string `json:"cardNo,omitempty"`          // 卡号（模糊查询）
	Status          string `json:"status,omitempty"`          // 交易状态
	TransactionType string `json:"transactionType,omitempty"` // 交易类型
	BeginTime       string `json:"beginTime,omitempty"`       // 开始时间
	EndTime         string `json:"endTime,omitempty"`         // 结束时间
	PageIndex       int64  `json:"pageIndex,omitempty"`       // 页码
	PageSize        int64  `json:"pageSize,omitempty"`        // 每页大小
}

// TransactionInfo 交易信息
type TransactionInfo struct {
	TransactionID       string  `json:"transactionId"`       // 交易ID
	CardID              string  `json:"cardId"`              // 卡ID
	CardNo              string  `json:"cardNo"`              // 卡号
	TransactionType     string  `json:"transactionType"`     // 交易类型
	Currency            string  `json:"currency"`            // 货币类型
	Amount              float64 `json:"amount"`              // 金额
	TransactionAmount   float64 `json:"transactionAmount"`   // 交易金额
	TransactionCurrency string  `json:"transactionCurrency"` // 交易货币
	Fee                 float64 `json:"fee"`                 // 手续费
	Status              string  `json:"status"`              // 状态
	TransactionTime     string  `json:"transactionTime"`     // 交易时间
	Detail              string  `json:"detail"`              // 详情
	Remark              string  `json:"remark"`              // 备注
	CreateTime          string  `json:"createTime"`          // 创建时间
}

// TransactionListResponse 交易列表查询响应
type TransactionListResponse struct {
	BaseResponse
	Data      []TransactionInfo `json:"data"`
	PageIndex int64             `json:"pageIndex"`
	PageSize  int64             `json:"pageSize"`
	Total     int64             `json:"total"`
}

// TransactionDetailRequest 交易详情查询请求
type TransactionDetailRequest struct {
	TransactionID string `json:"transactionId"` // 交易ID
}

// TransactionDetailResponse 交易详情查询响应
type TransactionDetailResponse struct {
	BaseResponse
	Data TransactionInfo `json:"data"`
}

// 卡Bin相关类型

// CardBinListRequest 卡Bin列表查询请求
type CardBinListRequest struct {
	PageIndex int64 `json:"pageIndex,omitempty"` // 页码
	PageSize  int64 `json:"pageSize,omitempty"`  // 每页大小
}

// CardBinInfo 卡Bin信息
type CardBinInfo struct {
	CardBinId     string   `json:"cardBinId"`     // 卡Bin ID
	Bin           string   `json:"bin"`           // 卡Bin号
	BinStatus     string   `json:"binStatus"`     // 卡头状态
	OpenCardFee   string   `json:"openCardFee"`   // 开卡手续费
	RechargeFee   string   `json:"rechargeFee"`   // 充值手续费
	RefundFee     string   `json:"refundFee"`     // 退款手续费
	TransFee      *string  `json:"transFee"`      // 交易手续费
	CancelFee     string   `json:"cancelFee"`     // 撤销手续费
	RefuseFee     string   `json:"refuseFee"`     // 拒付手续费
	AuthorizeFee  string   `json:"authorizeFee"`  // 授权手续费
	Remark        string   `json:"remark"`        // 备注
	MinCardAmount int      `json:"minCardAmount"` // 最小开卡金额
	HasHot        string   `json:"hasHot"`        // 是否热门卡
	HasNew        string   `json:"hasNew"`        // 是否新卡
	Network       string   `json:"network"`       // 卡类型
	Scene         []string `json:"scene"`         // 应用场景
}

// CardBinListResponse 卡Bin列表查询响应
type CardBinListResponse struct {
	BaseResponse
	Data      []CardBinInfo `json:"data"`
	PageIndex int64         `json:"pageIndex"`
	PageSize  int64         `json:"pageSize"`
	Total     int64         `json:"total"`
}

// 持卡人相关类型

// CardholderListRequest 持卡人列表查询请求
type CardholderListRequest struct {
	PageIndex     int64  `json:"pageIndex,omitempty"`     // 页码
	PageSize      int64  `json:"pageSize,omitempty"`      // 每页大小
	MatrixAccount string `json:"matrixAccount,omitempty"` // 矩阵账户
	FirstName     string `json:"firstName,omitempty"`     // 名
	LastName      string `json:"lastName,omitempty"`      // 姓
	Name          string `json:"name,omitempty"`          // 姓名（模糊搜索）
}

// CardholderInfo 持卡人信息
type CardholderInfo struct {
	CardholderID               string `json:"cardholderId"`               // 持卡人ID
	HlPayCardholderID          string `json:"hlpayCardholderId"`          // HlPay持卡人ID
	FirstName                  string `json:"firstName"`                  // 名
	LastName                   string `json:"lastName"`                   // 姓
	CardholderNameAbbreviation string `json:"cardholderNameAbbreviation"` // 持卡人姓名缩写
	Email                      string `json:"email"`                      // 邮箱
	Mobile                     string `json:"mobile"`                     // 手机号
	MobilePrefix               string `json:"mobilePrefix"`               // 手机号前缀
	DateOfBirth                string `json:"dateOfBirth"`                // 出生日期
	CertType                   string `json:"certType"`                   // 证件类型
	Portrait                   string `json:"portrait"`                   // 证件正面照片
	ReverseSide                string `json:"reverseSide"`                // 证件反面照片
	NationalityCountryCode     string `json:"nationalityCountryCode"`     // 国籍
	ResidentialAddress         string `json:"residentialAddress"`         // 居住地址
	ResidentialCity            string `json:"residentialCity"`            // 居住城市
	ResidentialCountryCode     string `json:"residentialCountryCode"`     // 居住国家
	ResidentialPostalCode      string `json:"residentialPostalCode"`      // 居住邮编
	ResidentialState           string `json:"residentialState"`           // 居住州/省
	Status                     string `json:"status"`                     // 状态
	CreatedAt                  string `json:"createdAt"`                  // 创建时间
	MatrixAccount              string `json:"matrixAccount"`              // 矩阵账户
	MemberID                   string `json:"memberId"`                   // 会员ID
	IsLegal                    string `json:"isLegal"`                    // 是否合法
	CardholderReviewStatus     string `json:"cardholderReviewStatus"`     // 持卡人审核状态
	Reason                     string `json:"reason"`                     // 原因
}

// CardholderListResponse 持卡人列表查询响应
type CardholderListResponse struct {
	BaseResponse
	Data      []CardholderInfo `json:"data"`
	PageIndex int64            `json:"pageIndex"`
	PageSize  int64            `json:"pageSize"`
	Total     int64            `json:"total"`
}

// CreateCardholderRequest 创建持卡人请求
type CreateCardholderRequest struct {
	UserID                     int64  `json:"userId,omitempty"`                     // 用户ID
	FirstName                  string `json:"firstName"`                            // 名
	LastName                   string `json:"lastName"`                             // 姓
	CardholderNameAbbreviation string `json:"cardholderNameAbbreviation,omitempty"` // 持卡人姓名缩写
	Email                      string `json:"email"`                                // 邮箱
	Mobile                     string `json:"mobile"`                               // 手机号
	MobilePrefix               string `json:"mobilePrefix,omitempty"`               // 手机号前缀
	DateOfBirth                string `json:"dateOfBirth,omitempty"`                // 出生日期
	CertType                   string `json:"certType,omitempty"`                   // 证件类型
	Portrait                   string `json:"portrait,omitempty"`                   // 证件正面照片
	ReverseSide                string `json:"reverseSide,omitempty"`                // 证件反面照片
	NationalityCountryCode     string `json:"nationalityCountryCode,omitempty"`     // 国籍
	ResidentialAddress         string `json:"residentialAddress,omitempty"`         // 居住地址
	ResidentialCity            string `json:"residentialCity,omitempty"`            // 居住城市
	ResidentialCountryCode     string `json:"residentialCountryCode,omitempty"`     // 居住国家
	ResidentialPostalCode      string `json:"residentialPostalCode,omitempty"`      // 居住邮编
	ResidentialState           string `json:"residentialState,omitempty"`           // 居住州/省
}

// CreateCardholderResponse 创建持卡人响应
type CreateCardholderResponse struct {
	BaseResponse
	Data interface{} `json:"data"` // 持卡人信息（可以是字符串ID或包含详细信息的对象）
}

// UpdateCardholderRequest 更新持卡人请求
type UpdateCardholderRequest struct {
	CardholderID               string `json:"cardholderId"`                         // 持卡人ID
	FirstName                  string `json:"firstName"`                            // 名
	LastName                   string `json:"lastName"`                             // 姓
	CardholderNameAbbreviation string `json:"cardholderNameAbbreviation,omitempty"` // 持卡人姓名缩写
	Email                      string `json:"email"`                                // 邮箱
	Mobile                     string `json:"mobile"`                               // 手机号
	Status                     string `json:"status"`                               // 状态
	// PhotonPay API 要求的字段
	DateOfBirth            string `json:"dateOfBirth,omitempty"`            // 出生日期
	NationalityCountryCode string `json:"nationalityCountryCode,omitempty"` // 国籍代码
	MobilePrefix           string `json:"mobilePrefix,omitempty"`           // 手机号前缀
	CertType               string `json:"certType,omitempty"`               // 证件类型
	Portrait               string `json:"portrait,omitempty"`               // 证件正面照片
	ReverseSide            string `json:"reverseSide,omitempty"`            // 证件反面照片
	ResidentialAddress     string `json:"residentialAddress,omitempty"`     // 居住地址
	ResidentialCity        string `json:"residentialCity,omitempty"`        // 居住城市
	ResidentialCountryCode string `json:"residentialCountryCode,omitempty"` // 居住国家代码
	ResidentialPostalCode  string `json:"residentialPostalCode,omitempty"`  // 居住邮编
	ResidentialState       string `json:"residentialState,omitempty"`       // 居住州/省
}

// UpdateCardholderResponse 更新持卡人响应
type UpdateCardholderResponse struct {
	BaseResponse
	Data CardholderInfo `json:"data"` // 更新后的持卡人信息
}

// 矩阵账户相关类型

// MatrixAccountListRequest 矩阵账户列表查询请求
type MatrixAccountListRequest struct {
	PageIndex      int64  `json:"pageIndex"`                // 页码
	PageSize       int64  `json:"pageSize"`                 // 每页大小
	MatrixAccount  string `json:"matrixAccount,omitempty"`  // 矩阵账户
	CreatedAtStart string `json:"createdAtStart,omitempty"` // 创建开始时间
	CreatedAtEnd   string `json:"createdAtEnd,omitempty"`   // 创建结束时间
}

// MatrixAccountInfo 矩阵账户信息
type MatrixAccountInfo struct {
	CreatedAt         string `json:"createdAt"`         // 创建时间
	MatrixAccount     string `json:"matrixAccount"`     // 矩阵账户
	MatrixAccountName string `json:"matrixAccountName"` // 矩阵账户名称
	Status            string `json:"status"`            // 状态
}

// MatrixAccountListResponse 矩阵账户列表查询响应
type MatrixAccountListResponse struct {
	BaseResponse
	Data      []MatrixAccountInfo `json:"data"`
	PageIndex int64               `json:"pageIndex"`
	PageSize  int64               `json:"pageSize"`
	Total     int64               `json:"total"`
}

// CreateMatrixAccountRequest 创建矩阵账户请求
type CreateMatrixAccountRequest struct {
	MatrixAccountName string `json:"matrixAccountName"` // 矩阵账户名称
}

// CreateMatrixAccountResponse 创建矩阵账户响应
type CreateMatrixAccountResponse struct {
	BaseResponse
	Data string `json:"data"` // 矩阵账户
}

// CVV查询相关类型

// CardCVVRequest 卡片CVV查询请求
type CardCVVRequest struct {
	CardID string `json:"cardId"` // 卡ID
}

// CardCVVResponse 卡片CVV查询响应
type CardCVVResponse struct {
	BaseResponse
	Data CardCVVInfo `json:"data"`
}

// CardCVVInfo 卡片CVV信息
type CardCVVInfo struct {
	CardID string `json:"cardId"` // 卡ID
	CVV    string `json:"cvv"`    // CVV码
}

// 卡历史相关类型

// CardHistoryListRequest 卡历史列表查询请求
type CardHistoryListRequest struct {
	PageIndex      int64  `json:"pageIndex,omitempty"`      // 页码
	PageSize       int64  `json:"pageSize,omitempty"`       // 每页大小
	CardID         string `json:"cardId,omitempty"`         // 卡ID
	CardFormFactor string `json:"cardFormFactor,omitempty"` // 卡介质
	Status         string `json:"status,omitempty"`         // 状态
	FeeType        string `json:"feeType,omitempty"`        // 收费类型
	CreatedAtStart string `json:"createdAtStart,omitempty"` // 创建开始时间
	CreatedAtEnd   string `json:"createdAtEnd,omitempty"`   // 创建结束时间
}

// CardHistoryInfo 卡历史信息
type CardHistoryInfo struct {
	ActualFeeAmount   string `json:"actualFeeAmount"`   // 实际费用金额
	ActualFeeCurrency string `json:"actualFeeCurrency"` // 实际费用货币
	CardID            string `json:"cardId"`            // 卡ID
	CardScheme        string `json:"cardScheme"`        // 卡组织
	CardType          string `json:"cardType"`          // 卡类型
	CreatedAt         string `json:"createdAt"`         // 创建时间
	FeeType           string `json:"feeType"`           // 收费类型
	MaskCardNo        string `json:"maskCardNo"`        // 掩码卡号
	MemberID          string `json:"memberId"`          // 会员ID
	MatrixAccount     string `json:"matrixAccount"`     // 矩阵账户
	Nickname          string `json:"nickname"`          // 昵称
	ReferenceNo       string `json:"referenceNo"`       // 参考号
	Status            string `json:"status"`            // 状态
	CardFormFactor    string `json:"cardFormFactor"`    // 卡介质
	CardNickname      string `json:"cardNickname"`      // 卡昵称
}

// CardHistoryListResponse 卡历史列表查询响应
type CardHistoryListResponse struct {
	BaseResponse
	Data      []CardHistoryInfo `json:"data"`
	PageIndex int64             `json:"pageIndex"`
	PageSize  int64             `json:"pageSize"`
	Total     int64             `json:"total"`
}

// 批量开卡相关类型

// BatchOpenCardRequest 批量开卡请求
type BatchOpenCardRequest struct {
	UserID               int64   `json:"userId"`                         // 用户ID
	MemberID             string  `json:"memberId,omitempty"`             // 会员ID
	MatrixAccount        string  `json:"matrixAccount,omitempty"`        // 矩阵账户
	AccountID            string  `json:"accountId,omitempty"`            // 账户ID
	AccountNo            string  `json:"accountNo,omitempty"`            // 账户号
	CardBin              string  `json:"cardBin"`                        // 卡bin
	CardBinId            string  `json:"cardBinId,omitempty"`            // 卡Bin ID
	CardCurrency         string  `json:"cardCurrency"`                   // 卡币种
	CardExpirationDate   int     `json:"cardExpirationDate,omitempty"`   // 卡过期日期
	CardScheme           string  `json:"cardScheme,omitempty"`           // 卡组织
	CardType             string  `json:"cardType"`                       // 卡类型
	CardFormFactor       string  `json:"cardFormFactor,omitempty"`       // 卡介质
	CardholderID         string  `json:"cardholderId,omitempty"`         // 持卡人ID
	CardDesignID         string  `json:"cardDesignId,omitempty"`         // 卡设计ID
	CardLogoID           string  `json:"cardLogoId,omitempty"`           // 卡logo ID
	MaxOnDaily           int     `json:"maxOnDaily,omitempty"`           // 每日最大限额
	MaxOnMonthly         int     `json:"maxOnMonthly,omitempty"`         // 每月最大限额
	MaxOnPercent         int     `json:"maxOnPercent,omitempty"`         // 最大百分比
	Cost                 float64 `json:"cost,omitempty"`                 // 卡片初始金额
	RechargeAmount       string  `json:"rechargeAmount,omitempty"`       // 充值金额
	RequestID            string  `json:"requestId"`                      // 请求ID
	TransactionLimit     string  `json:"transactionLimit,omitempty"`     // 交易限额
	TransactionLimitType string  `json:"transactionLimitType,omitempty"` // 交易限额类型
	ArrivalAmount        string  `json:"arrivalAmount,omitempty"`        // 到账金额
	RecipientID          string  `json:"recipientId,omitempty"`          // 收款人ID
	CardCount            int     `json:"cardCount,omitempty"`            // 批量开卡数量
	Nickname             string  `json:"nickname,omitempty"`             // 卡片昵称
	TimeoutSeconds       int     `json:"timeoutSeconds,omitempty"`       // 超时时间（秒）
	// HlPay特有字段
	CardAddress *string `json:"cardAddress,omitempty"` // 卡片地址
	Zip         *string `json:"zip,omitempty"`         // 邮编
	LastName    *string `json:"lastName,omitempty"`    // 姓氏
	City        *string `json:"city,omitempty"`        // 城市
	Bin         string  `json:"bin,omitempty"`         // BIN号
	BatchCount  string  `json:"batchCount,omitempty"`  // 批量数量（字符串格式）
	FirstName   *string `json:"firstName,omitempty"`   // 名字
	BillAddress *string `json:"billAddress,omitempty"` // 账单地址
	Phone       *string `json:"phone,omitempty"`       // 电话
	State       *string `json:"state,omitempty"`       // 州
	Email       *string `json:"email,omitempty"`       // 邮箱
}

// BatchOpenCardResponse 批量开卡响应
type BatchOpenCardResponse struct {
	BaseResponse
	Data interface{} `json:"data"` // 批量开卡结果，可能是任务ID或详细结果
}

// BatchOpenCardResult 批量开卡结果详情
type BatchOpenCardResult struct {
	BatchSummary BatchSummary `json:"batch_summary"` // 批量开卡摘要
	CardResults  []CardResult `json:"card_results"`  // 每张卡的详细结果
	Message      string       `json:"message"`       // 结果消息
}

// BatchSummary 批量开卡摘要
type BatchSummary struct {
	TotalCards   int    `json:"total_cards"`   // 总卡片数量
	SuccessCount int    `json:"success_count"` // 成功数量
	FailedCount  int    `json:"failed_count"`  // 失败数量
	SuccessRate  string `json:"success_rate"`  // 成功率
}

// CardResult 单张卡开卡结果
type CardResult struct {
	CardIndex int                    `json:"card_index"`          // 卡片索引
	Status    string                 `json:"status"`              // 状态：success/failed
	CardID    string                 `json:"card_id,omitempty"`   // 卡片ID（成功时）
	NikeName  string                 `json:"nike_name,omitempty"` // 卡片昵称
	Error     string                 `json:"error,omitempty"`     // 错误信息（失败时）
	Details   string                 `json:"details,omitempty"`   // 详细信息
	Data      map[string]interface{} `json:"data,omitempty"`      // 原始响应数据
	Note      string                 `json:"note,omitempty"`      // 备注
}
